package com.syyo.gulimall.ware.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.syyo.common.to.mq.OrderTo;
import com.syyo.common.to.mq.StockLockTo;
import com.syyo.common.vo.SkuHasStockVo;
import com.syyo.gulimall.ware.domain.entity.WareSkuEntity;
import com.syyo.gulimall.ware.domain.req.WareSkuReq;
import com.syyo.gulimall.ware.vo.WareSkuLockVo;

import java.util.List;

/**
 * 商品库存
 *
 * @author syyo
 * @email syyo@gmail.com
 * @date 2021-01-20 10:06:54
 */
public interface WareSkuService extends IService<WareSkuEntity> {

    /**
     * 新增
     */
    int add(WareSkuReq req);

    /**
     * 删除
     */
    int del(Integer id);

    /**
     * 编辑
     */
    int edit(WareSkuReq req);

    /**
     * 详情
     */
    WareSkuEntity findOne(Integer id);

    /**
     * 列表
     */
    IPage<WareSkuEntity> findAll(Integer pageNum, Integer pageSize, WareSkuReq req);

    List<SkuHasStockVo> findSkuHasStock(List<Long> skuIds);

    Boolean orderLockStock(WareSkuLockVo vo);

    void unLockStock(StockLockTo to);

    void unLockStock(OrderTo to);
}

